package com.maven.booksystem.aspect;


import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;


@Component
@Slf4j
@Aspect
public class TimeAspect {

    // 这个注解是 说明是 环绕通知，方法执行前后均运行 ，后面的是作用范围
    @Around("execution(* com.maven.booksystem.controller.*.*(..))")
    public Object time(ProceedingJoinPoint pj) throws Throwable {
        // 方法执行前
        long startTime = System.currentTimeMillis();

        // 目标方法执行
        Object result = pj.proceed();

        // 目标方法执行后
        log.info( pj.getSignature()+" costTime : "+(System.currentTimeMillis()-startTime)+"ms");
        log.info( pj.toLongString());
        log.info( pj.toShortString());


        return result;
    }
}
